Faz 01
Temel Kavramlar — C'ye Giriş
2–4 hafta
Ortam Kurulumu
- GCC / Clang kurulumu
- VS Code veya CLion ayarı
- Makefile temelleri
- Derleme & çalıştırma akışı
- İlk "Hello, World!" programı
Veri Tipleri & Değişkenler
- int, float, double, char
- Signed / unsigned farkı
- sizeof operatörü
- Sabitler ve #define
- Tür dönüşümleri (casting)
Operatörler & İfadeler
- Aritmetik operatörler
- Karşılaştırma & mantık
- Bit düzeyinde operatörler
- Operatör önceliği
- Ternary operatör
Kontrol Akışı
- if / else if / else
- switch-case
- for, while, do-while
- break, continue, goto
- İç içe döngüler
I/O İşlemleri
- printf format belirticileri
- scanf ile girdi alma
- getchar / putchar
- Hata akışı stderr
- Format string güvenliği
Faz Projeleri
Hesap Makinesi
Sıcaklık Dönüştürücü
FizzBuzz
Asal Sayı Bulucu
Sayı Tahmin Oyunu
Bu fazda her gün en az 1 küçük program yaz. Kodu ezberlemek yerine mantığını anlamaya odaklan. Derleme hatalarını okumaktan korkma — onlar seni öğretir.
Faz 02
Fonksiyonlar, Diziler & String'ler
2–4 hafta
Fonksiyonlar
- Fonksiyon tanımlama & prototip
- Parametre geçirme (değer/referans)
- Return tipleri & void
- Özyinelemeli (recursive) fonksiyonlar
- Fonksiyon aşırı yükleme (yok, ama alternatifler)
Diziler
- 1D ve 2D diziler
- Dizi başlatma yöntemleri
- Dizi üzerinde döngüler
- Fonksiyona dizi geçirme
- Dizi sınır dışı erişim riski
String İşlemleri
- char dizisi ve null terminator \0
- strcpy, strcat, strlen
- strcmp, strstr, strtok
- String okuma: fgets
- sprintf ve snprintf
Kapsam & Depolama
- Yerel vs global değişkenler
- static değişkenler
- auto, register, extern
- Stack frame kavramı
- Kapsam çakışması riski
Faz Projeleri
Sıralama Algoritmaları (Bubble, Insertion, Selection)
Matris Çarpımı
Sözcük Sayacı
Fibonacci & Faktöriyel
Palindrom Kontrolü
Recursive fonksiyonları yazarken her zaman base case'i önce düşün. Sonsuz özyinelemeli çağrı stack overflow'a neden olur.
Faz 03
Pointer'lar & Bellek Yönetimi
3–5 hafta
Pointer Temelleri
- Adres & referans operatörleri (* ve &)
- Pointer aritmetiği
- Pointer ve diziler ilişkisi
- void pointer, NULL pointer
- Dangling pointer tehlikesi
Dinamik Bellek
- malloc, calloc, realloc
- free ile bellek serbest bırakma
- Bellek sızıntısı (memory leak)
- Valgrind ile hata tespiti
- Heap vs Stack farkı
Gelişmiş Pointer Kullanımı
- Pointer dizileri
- Pointer'a pointer (çift yıldız **)
- Fonksiyon pointer'ları
- const pointer kullanımı
- restrict anahtar kelimesi
String & Bellek
- memcpy, memmove, memset
- Dinamik string manipülasyonu
- Buffer overflow riskleri
- Güvenli string fonksiyonları
- strdup ile kopyalama
Faz Projeleri
Dinamik Not Takip Sistemi
String Reverse & Manipülasyon
Fonksiyon Pointer Menü
Dinamik Dizi Genişletici
Bu faz C öğrenmenin en kritik noktasıdır. Pointer'ları tam kavramadan ilerlemek ilerleyen konularda büyük sorunlara yol açar. Her malloc için bir free yazdığını garantile. Bolca pratik yap.
Faz 04
Struct, Dosya I/O & Veri Yapıları
3–5 hafta
Struct & Union
- struct tanımlama & kullanım
- Pointer ile struct erişimi (->)
- İç içe struct'lar
- union ve enum kullanımı
- Anonim struct'lar
typedef & Bit Alanları
- typedef ile tip takma adı
- Bit field yapıları
- Bellek hizalama (alignment)
- Padding ve sizeof struct
- Packed struct kullanımı
Dosya İşlemleri
- fopen, fclose, fread, fwrite
- fprintf, fscanf, fgets
- Binary vs text dosya modu
- fseek, ftell, rewind
- Hata kontrolü ve feof
Bağlı Listeler
- Tek yönlü bağlı liste
- Çift yönlü bağlı liste
- Döngüsel bağlı liste
- Stack ve Queue implementasyonu
- Liste üzerinde arama & silme
Ağaç & Hash Yapıları
- Binary search tree (BST)
- Tree traversal (inorder, preorder, postorder)
- Hash tablosu implementasyonu
- Çakışma çözme yöntemleri
- Basit graf temsili (adjacency list)
Faz Projeleri
Kişi Rehberi (Dosya Destekli)
Stack & Queue Implementasyonu
Binary Search Tree
CSV Dosya İşleyici
Basit Veritabanı Simülasyonu
Veri yapılarını kağıt üzerinde çizerek anlamak, kodu doğrudan yazmaktan çok daha etkilidir. Her veri yapısını önce diyagramla, sonra kodla.
Faz 05
İleri Seviye — Sistem Programlama & Optimizasyon
4–8 hafta
Önişlemci (Preprocessor)
- #define, #ifdef, #ifndef, #endif
- Makro fonksiyonları & tuzakları
- Çok dosyalı proje yapısı
- Header guard kullanımı
- #pragma once
Hata Yönetimi
- errno ve perror kullanımı
- Hata kodları ve geri dönüş değerleri
- assert makrosu
- Savunmacı programlama teknikleri
- setjmp / longjmp ile exception benzeri yapı
Sistem Çağrıları (POSIX)
- fork, exec, wait
- Sinyal (signal) mekanizması
- Pipe ve FIFO
- Shared memory (shmget)
- Socket programlamaya giriş
Çok İş Parçacıklı Programlama
- pthreads kütüphanesi
- Mutex ve semafor
- Race condition ve deadlock
- Thread-safe programlama
- Thread pool implementasyonu
Performans & Araçlar
- GDB ile adım adım debug etme
- Valgrind bellek analizi
- Profiling (gprof, perf)
- Compiler optimizasyonları (-O1, -O2, -O3)
- Cache-friendly kod yazımı
Faz Projeleri
Mini Shell (Komut Satırı Yorumlayıcı)
Çok Parçacıklı Dosya Kopyalayıcı
TCP Echo Server / Client
Custom malloc Implementasyonu
Basit HTTP Sunucusu
Bu faza gelmeden önce önceki fazları tam kavradığından emin ol. Faz 5 projeleri iş başvurularında ve sistem programlamada doğrudan kullanılabilir seviyedir. Mini Shell projesi tek başına mükemmel bir portföy parçasıdır.